[アップデート] 委任したメンバーアカウントで Config ルール/適合パックを Organizations 組織全体にデプロイできるようになりました
はじめに
特定のメンバーアカウントをOrganizations 組織の 「委任管理者」 に指定することで、 メンバーアカウントからConfigルール/適合パックを組織全体にデプロイ できるようになりました。
なにが嬉しいのか?
組織全体の Configルール/適合パックの展開・管理をメンバーアカウントで行えるようになりました。
「最小限の特権の原則」のセキュリティベストプラクティスに基づいて、メンバーアカウントに委任できます。
もう少し詳しく
Config ルール/適合パック は Config で管理しているリソースが「あるべき姿に準拠しているかどうか」 をチェック(場合によって修復) するために役立つ機能です。詳細は下記が参考になります。
この Configルール/適合パックを 組織内の全アカウントに一括で展開する方法が増えました。
- 【マスターアカウント管理】CloufFormation StackSets で組織内にデプロイ
- 【マスターアカウント管理】ConfigのAPI
PutOrganizationConfigRule
で組織内にデプロイ - new!!! 【メンバーアカウント(as 委任管理者)】ConfigのAPI
PutOrganizationConfigRule
で組織内にデプロイ
方法1は、CFnテンプレートで Configルールや修復アクションを記述して、"マスターアカウントで" 組織内にデプロイする方法です。
方法2は 去年7月に実装された機能で、 "マスターアカウントで" PutOrganizationConfigRule
(AWS CLI:
aws configservice put-organization-config-rule
) を使うことで組織内全アカウントに Configルール
を展開できるものです。
方法3が今回のアップデートで出来るようになりました。 特定のメンバーアカウントを 委任管理者 に登録できます。 委任管理者のアカウントから「方法2」同様に組織全体に Configルール/適合パックを展開できるようになります。
実際にやってみる
組織内の全アカウント(東京リージョン) に Configルールを展開してみます。
前提
- ルールを適用するリージョンで、組織内全アカウントで Configが有効になっていること
- マスターアカウントでアグリゲーターの設定済であること
- 実施したときの AWS CLIバージョンは
2.0.18
アグリゲーター(Organizations連携) のセットアップは下記参照ください。
Organizationsの「信頼されたアクセス」を編集する
"マスターアカウント環境" で AWS CLIを使っていきます。 以下コマンドを実行しましょう。
aws organizations enable-aws-service-access --service-principal config-multiaccountsetup.amazonaws.com
【注意その1】2020/06/04時点で Organizations マネジメントコンソール [設定] > [AWS のサービスに対する信頼されたアクセス] からは設定できません。
【注意その2】Organizations マネジメントコンソール [設定] > [AWS のサービスに対する信頼されたアクセス] にある [AWS Config] とは違います。 こちらは "config.amazonaws.com" 、アグリゲーターを使うときなどに必要なアクセスです。今回は "config-multiaccountsetup.amazonaws.com" 。
▼ 確認コマンドはこちら
$ aws organizations list-aws-service-access-for-organization --output text ︙ ENABLEDSERVICEPRINCIPALS 2020-06-04T11:53:02.081000+09:00 config-multiaccountsetup.amazonaws.com <--- ENABLEDSERVICEPRINCIPALS 2020-04-13T11:12:48.212000+09:00 config.amazonaws.com ︙
委任管理者の設定
"マスターアカウント環境" で AWS CLIを使っていきます。 以下のようなコマンドを実行します。
aws organizations register-delegated-administrator --account-id ${委任管理者アカウントID} --service-principal config-multiaccountsetup.amazonaws.com
--account-id
… 委任管理者とするメンバーアカウントのアカウントID--service-principal
… config-multiaccountsetup.amazonaws.com
ちゃんと委任管理者となっているか、以下コマンドで行います。
$ aws organizations list-delegated-services-for-account --account-id ${委任管理者アカウントID} --output text ︙ DELEGATEDSERVICES 2020-06-04T12:03:29.249000+09:00 config-multiaccountsetup.amazonaws.com <--- DELEGATEDSERVICES 2020-05-08T17:17:45.550000+09:00 guardduty.amazonaws.com ︙
ConfigルールのPUT
"委任管理者の環境" で AWS CLIを使っていきます。
今回は AWS管理のルール s3-bucket-server-side-encryption-enabled
(S3バケットのデフォルト暗号化が有効になっているか) を組織に展開してみます。
以下コマンドを実行します。
aws configservice put-organization-config-rule \ --organization-config-rule-name org-s3-bucket-server-side-encryption-enabled \ --organization-managed-rule-metadata \ Description="Amazon S3 バケットで S3 デフォルトの暗号化が有効になっているか、S3 バケットポリシーがサーバー側の暗号化なしで put-object リクエストを明示的に拒否していることを確認します。",\ ResourceTypesScope="AWS::S3::Bucket",\ RuleIdentifier="S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"
返り値は以下のような Config Rule の ARNです。
{ "OrganizationConfigRuleArn": "arn:aws:config:ap-northeast-1:xxxxxxxxxxxx:organization-config-rule/org-s3-bucket-server-side-encryption-enabled-cxabcdefg" }
確認
マネジメントコンソールで実際に確かめてみます。
Configのルール画面にて、組織内全アカウントに以下のように Configルールが適用されていました。
各ルール名には OrgConfigRule-
プレフィクスがついています。
マスターアカウントでは アグリゲーターの設定をしているので、 [集約ビュー] > [ルール] から、組織内アカウントで作成されたルール一覧、結果が表示されています。
おわりに
実際に委任管理者のメンバーアカウントから Configルール/適合パックを組織全体に展開してみました。
GuardDuty(脅威検知サービス) でも同じように委任管理者を指定して、一括で管理できていましたが、 Configでも同じようなことができるようになりました。
マルチアカウントのセキュリティ統制に活用・検討したいところです。
少しでもどなたかのお役に立てば幸いです。
参考
▼ API, AWS CLI関連
▼ Configルール/適合パック関連